package com.example.mybatisplus.web.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.stereotype.Controller;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import com.example.mybatisplus.common.JsonResponse;
import com.example.mybatisplus.service.BookService;
import com.example.mybatisplus.model.domain.Book;

import java.util.Map;


/**
 *
 *  前端控制器
 *
 *
 * @author lxp
 * @since 2023-12-20
 * @version v1.0
 */
@RestController
@RequestMapping("/api/book")
public class BookController {

    private final Logger logger = LoggerFactory.getLogger( BookController.class );

    @Autowired
    private BookService bookService;

    // restful

    //接收请求   接收参数
    // get传参： url?key=value&key1=value1
    // 接收： 前端传什么键，后端接什么参数，要求参数名和键名一致   xx(String key,String key1)
    //        前端传什么键，后端用对象去接，要求对象的属性名和键名一致，如果没有这个对象，可以创建

    // post传参： 前后端分离一定是传json，后端用对象接，并且需要加注解  @RequestBody 将json转为对象
   // 占位符传参    url/1/2   = url?id=1&type=2   后端用占位符接

    // 对象：do   和数据库表一一对应的实体
    // vo    视图层对象   专门给前端看的
    // dto   数据传输层对象    专门用来当参数的

    //发出响应  统一响应结构
    // 在默认情况下，springmvc发出响应是走视图解析器，跳转页面
    // 如果只是想返回数据，那么加注解

    @GetMapping("/getById")
    public Book getBook(Long id){
        Book byId = bookService.getById(id);
        return byId;
    }

    @RequestMapping("/getById1")
    public JsonResponse getBook1(Long id){
        Book byId = bookService.getById(id);
        return JsonResponse.success(byId);
    }
}

